import {Base} from '../common/utils/base.js';
Component({
	/**
	 * 组件的属性列表
	 */
	properties: {
		//url请求地址
		url: {
			type: String,
			value: ""
		},
		//请求参数
		params: {
			type: Object,
			value: {}
		},
		//按钮颜色
		color: {
			type: String,
			value: ""
		},
		//按钮文字
		btnText: {
			type: String,
			value: "获取验证码"
		},

	},

	/**
	 * 组件的初始数据
	 */
	data: {
		type:'primary',
		timeout: 60,
		codetitle: '',
		timer: "", //定时器名字
		code: '',//验证码
		isDisabled: false, // 按钮是否禁用
	},
	ready: function () {
		this.setData({
			codetitle:this.data.btnText
		})
	},
	/**
	 * 组件的方法列表
	 */
	methods: {

		/**
		  * 验证码
		  */
		sendCode() {
			if(this.data.url==""){
				Base.toast("缺少请请求URL地址");
				return false;
			}
			if(Base.isObjEmpty(this.data.params)){
				Base.toast("缺少参数");
				return false;
			}
			if (!this.data.isDisabled) {
				this.setData({
					isDisabled: true
				});

				//倒计时
				this.countDown();

				if(this.data.url){
					Base.http_request({
						url: this.data.url,
						data: this.data.params,
						}).then((res)=>{
							//数据传回去
							this.triggerEvent("onClick", res);
					}).catch((err)=>{
						this.triggerEvent("onClick", err);
					});
				}
			}
		},
		//验证码倒计时
		countDown: function () {
			var countDownNum = this.data.timeout;//获取倒计时初始值
			//如果将定时器设置在外面，那么用户就看不到countDownNum的数值动态变化，所以要把定时器存进data里面
			this.setData({
				timer: setInterval(() => {//这里把setInterval赋值给变量名为timer的变量
					//每隔一秒countDownNum就减一，实现同步
					countDownNum--;

					//然后把countDownNum存进data，好让用户知道时间在倒计着
					this.setData({
						timeout: countDownNum,
						codetitle: "重发(" + countDownNum + ")",
						type: "secondary"
					})
					//在倒计时还未到0时，这中间可以做其他的事情，按项目需求来
					if (countDownNum == 0) {
						//这里特别要注意，计时器是始终一直在走的，如果你的时间为0，那么就要关掉定时器！不然相当耗性能
						//因为timer是存在data里面的，所以在关掉时，也要在data里取出后再关闭
						clearInterval(this.data.timer);
						//关闭定时器之后，可作其他处理codes go here
						this.setData({
							codetitle: this.data.btnText,
							type: 'primary',
							timeout: 60,
							isDisabled: false
						});
					}
				}, 1000)
			});
		}

	}
})
